System and method for sharing trimmed versions of digital media items

ABSTRACT

A computing device that provides access to digital media items receives a command from an entity to share a digital media item that was uploaded by another entity. The computing device invokes an interface for trimming the digital media item in response to receiving the command. The computing device receives input for a trim operation to be performed on the digital media item. The computing device then provides a link or embed code for the digital media item for posting on a web site, wherein accessing the link or embed code causes the output of the trim operation to be presented to a user.

RELATED APPLICATIONS

This application is a continuation application of co-pending U.S. patentapplication Ser. No. 13/449,215, filed Apr. 17, 2012, entitled, “SYSTEMAND METHOD FOR SHARING TRIMMED VERSIONS OF DIGITAL MEDIA ITEMS,” whichis herein incorporated by reference.

TECHNICAL FIELD

Embodiments of the present invention relate to the sharing of digitalmedia items and, more particularly, to an interface for editing digitalmedia items and sharing those digital media items.

BACKGROUND

Many video and image hosting websites allow users to share images orvideos with others. For example, users may share videos by posting linksto those videos on social networking websites or blogs, by includinglinks in emails, and so on.

SUMMARY

In an embodiment of the present invention, a computing device thatprovides access to digital media items receives a command from an entityto share a digital media item that was uploaded by an entity, either thesame entity or another entity. The digital media item may be, forexample, a video or an audio file. The computing device invokes aninterface for trimming the digital media item in response to receivingthe command. The computing device receives input for a trim operation tobe performed on the digital media item. The computing device thenprovides a link or embed code for the digital media item, whereinaccessing the link or embed code causes the output of the trim operationto be presented to a user.

In addition, methods and systems for performing the operations of theabove described embodiments are also implemented. Further, a computerreadable storage media is provided to store instructions for performingthe operations of the above described embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be understood more fully from the detaileddescription given below and from the accompanying drawings of variousembodiments of the invention.

FIG. 1 illustrates an exemplary system architecture, in accordance withone embodiment of the present invention.

FIG. 2 is a block diagram of a sharing module, in accordance with oneembodiment of the present invention.

FIG. 3 is a block diagram of a playback module, in accordance with oneembodiment of the present invention.

FIGS. 4A-4B illustrate a user interface for trimming video, inaccordance with one embodiment of the present invention.

FIG. 5 is a flow diagram illustrating one embodiment for a method ofsharing a trimmed version of a digital media item.

FIG. 6 is a flow diagram illustrating one embodiment for a method ofsharing a trimmed version of a video.

FIG. 7 is a flow diagram illustrating another embodiment for a method ofsharing an edited version of a digital media item.

FIG. 8 is a flow diagram illustrating one embodiment for a method ofsharing multiple digital media items.

FIG. 9 is a block diagram of an exemplary computer system that mayperform one or more of the operations described herein.

DETAILED DESCRIPTION

A system and method for sharing trimmed versions of digital media itemsbased on input from an entity are discussed herein. As used herein, adigital media item is an electronic representation of a video or anaudio clip. Examples of digital media items include digital music andother audio files (e.g., moving picture experts group (MPEG) audio layer3 (MP3) files, advanced audio coding (AAC) files, waveform audio fileformat (WAV) files, audio interchange file format (AIFF) files, AppleLossless (m4A) files, etc.), and digital videos (e.g., MPEG-2 files,MPEG-4 (MP4) files, DivX files, audio video interlace (AVI) files,advanced video coding (AVC) files, VP8 files, etc.). As used herein, anentity may be a user, a business entity, a web bot (a softwareapplication that runs an automated task over the Internet), or any otherprogram, individual or organization.

In one embodiment, a user (or other entity) selects a video (or otherdigital media item), and issues a command to share the video. Inresponse to receiving the sharing command, a video hosting website (orother digital media host) invokes an interface for trimming the video.Alternatively, a media player running on a client machine may invoke theinterface for trimming the video. The user selects a portion of thevideo for sharing via the interface, and that selected portion is sharedwithout sharing a remainder of the video. The selected portion of thevideo may be shared by posting a link to the selected portion to socialnetworking websites or blogs, by including the link in email, instant ortext messages, and so forth. The selected portion may also be shared bygenerating embed code and incorporating that embed code in a website.When a user clicks on the link (or embed code), the user will bepresented with the selected portion of the video, and not the remainderof the video.

Note that some embodiments of the present invention are described withreference to videos. However, embodiments of the present invention alsoapply to audio clips (e.g., songs, albums, user generated audio files,etc.). For example, embodiments of the present invention may trim aselected portion of an audio clip, and may share just the trimmedportion.

FIG. 1 illustrates an example system architecture 100, in accordancewith one embodiment of the present invention. The system architecture100 includes a server machine 115, a repository 120, a third partyserver machine 118 and client machines 102A-102N connected to a network104. Network 104 may be a public network (e.g., the Internet), a privatenetwork (e.g., a local area network (LAN) or wide area network (WAN)), acellular network, a broadcast network, or a combination thereof.

The client machines 102A-102N may be personal computers (PC), laptops,mobile phones, tablet computers, or any other computing devices. Theclient machines 102A-102N may run an operating system (OS) that manageshardware and software of the client machines 102A-102N. A browser (notshown) may run on the client machines (e.g., on the OS of the clientmachines). The browser may be a web browser that can access contentserved by a web server. The browser may issue queries and commands tothe web server, such as commands to access a specific digital mediaitem, commands to share the digital media item, commands to trim thedigital media item, and so forth. The client machines 102A-102N may alsoupload digital media items to the web server for storage.

Server machine 115 may be a rackmount server, a router computer, apersonal computer, a portable digital assistant, a mobile phone, alaptop computer, a tablet computer, a camera, a video camera, a netbook,a desktop computer, a media center, or any combination of the above.Server machine 115 includes a web server 126, a sharing module 122 and aplayback module 124. In alternative embodiments, the web server 126,sharing module 122 and/or playback module 124 may run on differentmachines. For example, the sharing module 122 may run on a clientmachine 102A-102N instead of or in addition to on server machine 115.Additionally, in some embodiments, the web server 126, sharing module122 and/or playback module 124 may be combined into a single component.

Repository 120 is a persistent storage that is capable of storing imagefiles, audio files and/or video files. As will be appreciated by thoseskilled in the art, in some embodiments repository 120 might be anetwork-attached file server, while in other embodiments repository 120might be some other type of persistent storage such as anobject-oriented database, a relational database, and so forth, that maybe hosted by the server machine 115 or one or more different machinescoupled to the server machine 115 via the network 104. The video and/oraudio stored in the repository 120 may include user generated contentthat is uploaded by clients 102A-102N. The video and/or audio mayadditionally or alternatively include content provided by otherentities, e.g., service providers such as news organizations,publishers, libraries and so on.

Web server 140 may receive digital media items from clients 102A-102N,and store those digital media items in repository 120. Web server 140may additionally serve digital media items (e.g., video, audio and/orimages) from repository 120 to clients 102A-102N. Accordingly, webserver 140 may provide a media hosting service. Web server 140 mayreceive search queries from clients 102A-102N and perform searches onthe digital media items in the repository 120 to determine digital mediaitems that satisfy the search queries. Web server 140 may send to aclient 102A-102N those digital media items that match a search query.Clients 102A-102N may also browse contents of the repository 120. Forexample, clients may select in a web page specific tabs or filtersassociated with particular categories of content. Web server 140 maythen present digital media items associated with those particularcategories to the clients 102A-102N. For videos and/or audio, web server126 may coordinate with playback module 124 to stream the videos/audioto clients 102A-102N, or may download the video or audio to the clients102A-102N. In streaming, the clients 102A-102N can begin playback of thevideo or audio files before receiving the entire audio or video. Incontrast, with downloading the audio or video typically is not playableuntil a complete file is received by the client 102A-102N.

Sharing module 122 edits and shares digital media items. Note thatsharing module 122 may run on a media hosting server machine 115 (asshown), or may run on a client 102A-102N. For example, sharing module122 may be code such as JavaScript that web server 128 sends to abrowser running on a client 102A-102N. An entity such as a user of aclient 102A-102N viewing and/or listening to a digital media item (e.g.,a video, image or audio clip) may want to share the digital media itemwith others. In some embodiments, the user may want to post a link tothe digital media item to a social networking website, blog, forum, orother web site, or may want to email the link to a friend. Sharingmodule 122 may establish a connection to third party server machine 118that hosts a specified third party website, and post a link to thedigital media item (or embed code associated with the digital mediaitem) onto a web page served by third party server machine 118. In otherembodiments, a client 102A-102N may copy a link (or embed code) providedby sharing module 122, and paste that link (or embed code) to a websiteof third party server machine 118. The third party server machine 118may host a web site such as a blog, an ecommerce website, a socialnetworking website, or other type of website. If the third party servermachine 118 hosts a social networking website, for example, sharingmodule 122 or clients 102A-102N may post a link to the digital mediaitem on a particular profile or homepage of a user on the socialnetworking website.

Frequently, an entity such as a user or organization is interested insharing a portion of a digital media item (e.g., highlights of or ashort segment within a video). Accordingly, sharing module 122 mayprovide an interface that enables users to edit and share editedversions of digital media items. Sharing module 122 may launch aninterface for trimming a digital media item in response to receiving asharing command. In one embodiment, in which sharing module 122 runs ona server machine, sharing module 122 downloads JavaScript or other codeto a client 102A-102N for the interface, and causes the client 102A-102Nto execute the code. For example, sharing module 122 may launch a mediaeditor in response to receiving a sharing command, and may cause aclient to launch an interface to the media editor. Alternatively, oradditionally, sharing module 122 may launch an interface to the mediaeditor on the server machine. In another embodiment, in which sharingmodule 122 executes on a client machine (e.g., if sharing module isitself JavaScript code that was downloaded to a client machine), sharingmodule 122 may launch an interface and/or media editor on the client102A-102N.

The media editor may provide only a single editing operation (e.g., atemporal trim operation), or may provide multiple different editingoperations (e.g., trim, merge, add text, add voiceover, add effects, andso forth). An entity may interact with the interface running on theclient. The interface may send instructions to sharing module 122(whether sharing module is running on a server or client machine) basedon the interaction. For example, a user may generate an edit command viathe interface, and the edit command may be communicated to sharingmodule 122. Alternatively, or additionally, an entity may interact withthe interface running on server machine 115 via a web browser running onthe client 102A-102N.

In response to receiving an edit command, sharing module 122 may editthe digital media item. Sharing module 122 may then save an edited(e.g., trimmed) version of the digital media item in repository 120 orat another location. Sharing module 122 may then generate and post alink to the edited version of the digital media item. In an alternativeembodiment, sharing module 122 may generate a link to the originaldigital media item that includes the requested editing operations. Inresponse to an entity selecting the link (e.g., clicking on the link),playback module 124 may edit the digital media item to produce an edited(e.g., trimmed) version of the digital media item before presenting thedigital media item to the entity. One embodiment of sharing module 122is discussed in greater detail below with reference to FIG. 2.

Playback module 124 plays or otherwise presents digital media items torequesting entities. An entity may select or otherwise interact with alink to a digital media item or embed code associated with a digitalmedia item. In response, playback module 124 may locate the digitalmedia item in repository 120, and stream or download the digital mediaitem to a requesting client 102A-102N (or to a third party website thatprovides the digital media item to the requesting client). If the linkincluded editing commands, playback module 124 may execute those editingcommands before presenting a digital media item identified in theaccessed link to the requesting entity. One embodiment of playbackmodule 124 is discussed in greater detail below with reference to FIG.3.

FIG. 2 is a block diagram of a sharing module 205, in accordance withone embodiment of the present invention. The sharing module 205 mayinclude a user interface 210, a link generator 215, and/or a media itemmodifier 225. Note that in alternative embodiments, the functionality ofone or more of the user interface 210, link generator 215, and/or mediaitem modifier 225 may be combined into a single module or divided intomultiple modules. Sharing module 205 may run on a server machine and/oron a client machine.

Sharing module 205 is invoked in response to an entity requesting toshare a digital media item. The selected digital media item may be anoriginal digital media item 230 that was previously uploaded by anentity than the entity requesting to share that digital media item. Onceinvoked, sharing module 205 presents user interface 210 to therequesting entity. In one embodiment, sharing module 205 downloadsJavaScript or other code for the user interface 210 to a client, andcauses the client to execute the code. Therefore, the user interface mayrun on a server machine, on a client machine, or on both. The userinterface 210 may present the digital media item (e.g., original digitalmedia item 230) to be shared and may allow an entity to provide inputsfor one or more editing operations. The editing operations may includetrim operations, add effects operations, add text or voiceoveroperations, etc. A user or other entity may provide commands to the userinterface. The user interface may then show an updated digital mediaitem based on the commands.

FIGS. 4A-4B illustrate embodiments of a user interface 405 for modifyinga video in response to a sharing request. As shown, user interface 405may show a current play time and total play time 430 for the video, aswell as a current frame 408 corresponding to the current play time 430.A playback slider 435 is positioned on a region of a playback bar 432that corresponds to the current play time 430. The playback slider 435may be adjusted (e.g., dragged) to any other region of the playback bar432 to adjust the current play time 430. As illustrated, the userinterface 405 may also include a preview 412 of the video. The preview412 may include a series of thumbnail images arranged sequentially. Thissequence of thumbnail images may provide an overview of the contents ofthe video.

FIG. 4A illustrates a first view 400 of the user interface 405, inaccordance with one embodiment of the present invention. In the firstview 400, the preview 412 includes a first slider 455 and a secondslider 460. Both the first slider 455 and second slider 460 may berepositioned anywhere on the preview 412. The first slider 455 maydesignate a beginning of a trimmed version of the video. A first trimmedregion 440 to the left of the slider 455 may not be included in thetrimmed version of the video. Similarly, the second slider 460 maydesignate an end of the trimmed version of the video. A second trimmedregion 450 to the right of the second slider 460 may not be included inthe trimmed version of the video, while a remaining region 445 betweenthe first slider 455 and the second slider 460 may be included in thetrimmed version of the video. Both of the sliders may be moved, forexample, by clicking on the slider and dragging it to a new position onthe preview 412. In FIG. 4A, the first slider 455 is positioned 5.2seconds into the video, and the second slider 460 is positioned 21.53seconds into the video. Therefore, the first trimmed region 440 containsthe first 5.2 seconds of the video, the remaining region 445 containsseconds 5.2-21.53 of the video, and the second trimmed region 450contains seconds 21.53 to the end of the video. A link generated basedon the slider positions shown in view 400 would, when accessed, causethe video to play from seconds 5.2 to 21.53.

FIG. 4B illustrates a second view 401 of the user interface 405, inaccordance with another embodiment of the present invention. In secondview 401, preview 412 includes a third slider 465 and a fourth slider470 in addition to the first slider 455 and the second slider 460. Notethat more or fewer sliders may be used. In one embodiment, new sliderscan be added to the preview 412 based on user commands. For example,users may right click on the preview 412 to bring up an option to add anadditional slider. Alternatively, or in addition, an image of a slidermay be shown outside of the preview 412. A user may drag and drop thatimage of a slider into preview 412 to add an additional slider. In oneembodiment, new sliders are added to preview 412 in pairs.

As shown, the first slider 455 is positioned 7.93 seconds into thevideo, the second slider 460 is positioned 14.33 seconds into the video,the third slider 365 is positioned 20.46 seconds into the video, and thefourth slider 470 is positioned 24.46 seconds into the video. Therefore,the first trimmed region 440 contains the first 7.93 seconds of thevideo, a first remaining region 475 contains seconds 7.93-14.33 of thevideo, a second trimmed region 480 contains seconds 14.33 to 20.46 ofthe video, a second remaining region 485 contains seconds 20.46 to 24.46of the video, and a third trimmed region 490 contains seconds 24.46 tothe end of the video. A link generated based on the slider positionsshown in view 401 would, when accessed, cause the video to play fromseconds 7.93 to 14.33 and then from 20.46 to 24.46.

Note that the user interface 405 may include elements other than slidersfor providing user input for trim operations. For example, the userinterface 405 may include a text box into which an entity can inputspecific start times and end times of a digital media item. Userinterface 405 may additionally include fast forward and/or rewindbuttons for adjusting a start time and/or end time to use for a trimoperation. The user interface 405 may also include options forperforming other operations than a trim operation. For example, userinterface 405 may include options for performing rotate operations, foradding effects and for adding text or voiceovers. User interface 405 mayinclude a rotate button 415 that, when selected, provides options forrotating the video clockwise or counterclockwise. User interface 405 mayalso include an effects button 420, which may provide options for addingone or more effects to the video. Such effects may include transitioneffects between different remaining regions (e.g., between firstremaining region 475 and second remaining region 485), such as fade inand fade out, merge from fade, etc. Such effects may also includechanges in intensity or contrast, color changes (e.g., converting thevideo to black and white or adding a specific color filter to thevideo), a stabilization effect to stabilize a shaky video, etc. In thecase of images, effects may include for example, red eye reduction orother photo specific effects. User interface 405 may also include a textbutton 425 for adding text and/or voiceover to the video.

Returning to FIG. 2, once an entity is finished selecting editoperations (e.g., temporal trimming operations) for a digital media item(e.g., a video), media editor 225 may perform the selected editoperations on the digital media item. For example, media editor 225 maytrim one or more portions of the digital media item, may add effects tothe digital media item, may add text or voiceover to the digital mediaitem, may merge the digital media item (or a portion of the digitalmedia item) with another digital media item, and so forth. Media editor225 may then save an edited (e.g., temporally trimmed) version of thedigital media item 240 in a repository.

In one embodiment, once media editor 225 saves the edited version of thedigital media item 240, link generator 215 generates a link 245 to thatedited digital media item 240. The link (also known as a hyperlink) is areference to data that an application (e.g., a web browser) can directlyfollow to access the data. The link, when selected or accessed, maycause a web browser or other application to load a web page provided bya web server that hosts the digital media item associated with the link.The link may be a long form link that specifies a full address for thedigital media item. An example of such a long form link ishttp://www.yourvideo.com/watch?v=flowers. Alternatively, the link may bea short form link that includes an alias that can be interpreted by auniversal resource locator (URL) shortening service to determine a fullURL associated with the link. An example of a short form link to adigital media item is http://yvid.eo/flowers.

In one embodiment, the link 245 points to the edited media item 240. Inan alternative embodiment, media editor 225 may not edit the originalmedia item 230 prior to generation of the link 245. In such anembodiment, the link 245 may be to the original digital media item 230.However, in such an embodiment, the link may include instructions forperforming the selected operations on the digital media item. Theinstructions may be additional text added to an end of the link. Forexample, the language “?7:93-14:33” may be added to indicate thatseconds 7.93 to 14.33 of a particular video are to be shown when thelink is used. Accordingly, when a user clicks on such a link 245, aplayback module (discussed below) receives an access request along withthe operations, and may perform the operations on the original digitalmedia item before presenting the digital media item to the user.

Note that rather than or in addition to generating a link to a digitalmedia item, link generator 215 may generate an embed code for thedigital media item. The embed code, when selected or accessed, may notcause a web browser or other application (e.g., an email application) toload a web page provided by the web server that hosts the digital mediaitem, or play the media item within the application itself. Instead, aweb server of a current web page that is visited by the browser maycontact the web server that hosts the digital media item, and mayrequest that the digital media item be streamed or downloaded to theclient. Embed code may include hypertext markup language (HTML) codethat may cause a media player to be expanded into a web page of a webserver. The media player may be, for example, a Flash player or ahypertext markup language 5 (HTML5) player. An example of an embed codeis as follows:

<iframe width=“420” height=“315”

src=“http://www.yourvideo.com/embed/flowers”

frameborders=“0” allowfullscreen></iframe>

In one embodiment, the embed code loads an edited media item.Alternatively, the embed code may store instructions to perform selectedoperations on a media item. These instructions may be used to performthe selected operations in response to the embed code being accessed.Such instructions may be additional text added to the embed code (e.g.,playtime=7:43-14:33).

Once link generator 215 generates a link (or embed code), link poster228 may post the link (or embed code) to one or more locations specifiedby the requesting entity. For example, link poster 228 may post the link(or embed code) to specified social network websites, to specifiedblogs, to specified forums, etc. Link poster 228 may also email the link(or embed code) to specified email addresses.

FIG. 3 is a block diagram of a playback module 305, in accordance withone embodiment of the present invention. The playback module 305includes a link interpreter 315 and a media editor 225. Note that inalternative embodiments, the functionality the user media editor 225and/or link interpreter 315 may be combined into a single module ordivided into multiple modules.

When an entity that is connected to a network (e.g., the Internet)selects a link 245 (e.g., clicks on the link) in an application that caninfer a URL from the link, that application may contact a web serverthat hosts playback module 305. The web server may then invoke playbackmodule 305. Playback module 305 may transmit code 248 such as JavaScriptcode to the application. The JavaScript code may be for a media player.The application may execute the JavaScript code to invoke a media playerthat can play or otherwise present the digital media item associatedwith the link. Note that playback module 205 may also be invoked inresponse to an entity interacting with embed code associated with thedigital media item.

Links (or embed code) may be to original unedited media items 230 or topreviously edited digital media items 240. Links (or embed code) to, forexample, original digital media items 230 may include instructions forediting the digital media items 230. In one embodiment, link interpreter315 parses information received in response to an entity accessing thelink (or embed code) to determine whether the link (or embed code)includes any commands for editing operations. For example, linkinterpreter 315 may interpret the language “?7:93-14:33” at the end ofthe link to mean play only seconds 7.93 to 14.33 of the digital mediaitem associated with the link. If link interpreter 315 identifies anyoperations that are to be performed on a digital media item before it ispresented, link interpreter invokes media editor 225. Media editor 225then performs the identified operations on the digital media itemidentified in the link (or embed code). Once the edits have beenperformed, playback module 305 may stream or download the digital mediaitem to the client. The media player executing on the client may thenplay or otherwise present the digital media item. In such an embodiment,an edited version of the digital media item 240 may be maintained inmemory of a server machine hosting playback module during a currentsession with a client. The edited version may then be cleared frommemory when the session is terminated.

FIGS. 5-8 are flow diagrams of various embodiments of methods forsharing trimmed versions of digital media items. The methods areperformed by processing logic that may comprise hardware (circuitry,dedicated logic, etc.), software (such as is run on a general purposecomputer system or a dedicated machine), or a combination of both. Inone embodiment, the methods are performed by the server machine 115 ofFIG. 1. The methods of FIG. 5-8 may be performed by sharing module 122and/or playback module 124 running on server machine 115 or anothermachine (e.g., a client machine).

FIG. 5 is a flow diagram illustrating one embodiment for a method 500 ofsharing a trimmed version of a digital media item. In one embodiment,the digital media item is a video. Alternatively, the digital media itemmay be an audio file or image. At block 505 of method 500, processinglogic receives a command from an entity to share a digital media itempreviously uploaded by another entity. The digital media item may bestored by a media hosting service such as a video hosting website orimage hosting website.

At block 510, processing logic invokes an interface for trimming (e.g.,temporally trimming) the digital media item in response to receiving thecommand. In one embodiment, the interface for trimming the digital mediaitem is invoked if the entity selects an “edit and share” functionprovided by the processing logic. In one embodiment, the interfacecorresponds to user interface 405 of FIG. 4A and/or FIG. 4B. In anotherembodiment, the interface corresponds to a different user interfaceproviding trimming options for an entity.

At block 512, processing logic receives input for a trim operation. Theinput may specify one or more regions of the digital media item to keepand/or one or more regions of the digital media item to remove. At block514, processing logic performs a trim operation based on the receivedinput. At block 515, processing logic saves a trimmed version of thedigital media item. The trimmed version of the digital media item may bestored as a separate file in a same repository or different repositoryas the original digital media item that was trimmed. In one embodiment,the trimmed version of the digital media item is saved as a delta fromthe original version of the digital media item. This may reduce anamount of storage space that is consumed by the trimmed version of thedigital media item.

At block 520, processing logic provides a link or embed code for thetrimmed version of the digital media item. The link may be a long formURL hyperlink or a short form URL hyperlink. When an entity accesses thelink from a location to which it was posted, that entity will beredirected to a website of the digital media item's host, which willplay or otherwise present the digital media item. An embed code mayinclude code for presenting the digital media item directly from alocation to which the embed code is posted. In such an embodiment, whenan entity accesses the embed code from a location to which it wasposted, that location may retrieve the digital media item from thedigital media item's host, and then present the digital media item tothe entity. Thus, the entity may view the trimmed digital media itemwithout leaving the location to which the embed code was posted.

FIG. 6 is a flow diagram illustrating one embodiment for a method 600 ofsharing a trimmed version of a video. At block 605 of method 600,processing logic receives a command from an entity to share a videopreviously uploaded by another entity. At block 610, processing logicinvokes an interface for trimming the video in response to receiving thecommand. The interface may be invoked on a client, on a server, or both.The interface may be an interface of a video editor. The video editormay include functionality for performing just a trim operation, or mayinclude additional functionality for performing other edit operationssuch as a merge operation, an add effects operation, and so forth. Inone embodiment, the video editor presents a preview of the video alongwith a first indicator and a second indicator in the interface. Inalternative embodiments, more or fewer sliders may be presented. Theindicators may be in the form of sliders, and a user or other entity mayadjust the sliders by moving them to any play time in the preview.Boundaries set by the sliders may then identify regions of the video totrim. In further embodiments, the indicators may be elements other thansliders. For example, the indicators may be numerical indicators. A usermay type in a start and end time that identify regions of the video totrim in such numerical indicators.

At block 615, processing logic presents the video to the entity withindicators of a start of the video and an end of the video. At block620, processing logic determines whether an input has been received tomodify a first indicator to specify a start play time (e.g., byrepositioning the first slider to the start play time). If so, then themethod continues to block 625, and processing logic sets a beginning ofa trimmed version of the video to correspond to the start play timeassociated with the modified first indicator. Otherwise, the methodproceeds to block 630.

At block 630, processing logic determines whether an input has beenreceived to modify a second indicator to specify an end play time (e.g.,by repositioning the second slider to the second play time). If so, thenthe method continues to block 635, and processing logic sets an end ofthe trimmed version of the video to correspond to the end play timeassociated with the modified second identifier. Otherwise, the methodproceeds to block 640.

At block 640, processing logic trims the video based on the start playtime and the end play time, and saves the trimmed version of the videoto permanent storage. At block 645, processing logic provides a link orembed code for the trimmed version of the video. Providing the link orembed code may include providing a link or embed code that can be copiedand pasted by the entity to a web page, email, etc. Alternatively,providing the link or embed code may further include posting the link orembed code for websites or other locations specified by the entity.

Note that though method 600 has been described with reference to a firstand second indicator, additional indicators may be used to trimadditional portions of the digital media item. For example, a first pairof sliders may be used to specify that seconds 10-20 of the video willbe included in the trimmed version of the video, and a second pair ofsliders may be used to specify that seconds 40-50 of the video will beincluded in the trimmed version of the video. Alternatively, a singleindicator may be used to receive multiple trim inputs.

FIG. 7 is a flow diagram illustrating another embodiment for a method700 of sharing an edited version of a digital media item. At block 705of method 700, processing logic receives a command from an entity toshare a digital media item previously uploaded by an entity. At block710, processing logic invokes an editor in response to receiving thecommand. At block 715, processing logic receives an input for a trimoperation based on the entity using the editor. At block 720, processinglogic stores the trim operation (e.g., stores a trim operation command).At block 725, processing logic provides a link or embed code for thedigital media item. The provided link or embed code includes anidentification of the requested trim operation (e.g., the trim operationcommand), which may be stored, for example, at an end of the link orembed code. At block 730, processing logic posts the link or embed codeto a specified location or locations (e.g., to a user profile on asocial networking website, to a forum, to a blog, etc.).

At block 735, processing logic receives an access request to the digitalmedia item based on a new entity clicking on the link or embed code (orotherwise accessing the link or embed code). The access request may bereceived from a client operated by the entity if a link is used.Alternatively, the access request may be received from the location towhich embed code was posted if the embed code is used.

At block 740, processing logic performs the trim operation specified inthe link or embed code in response to receiving the access request.Processing logic then presents the trimmed version of the digital mediaitem to the entity. Alternatively, in the case of embed code, processinglogic may provide the trimmed version of the digital media item to thelocation to which the embed code was posted, and that location maypresent the digital media item to the entity.

FIG. 8 is a flow diagram illustrating one embodiment for a method 800 ofsharing multiple digital media items. At block 805 of method 800,processing logic receives a command from an entity to share one or moredigital media items previously uploaded by an entity. At block 810,processing logic invokes an interface for modifying and sharing digitalmedia items in response to receiving the command. At block 815,processing logic receives input to merge at least a portion of a firstdigital media item with at least a portion of a second digital mediaitem. The input may specify a trimmed portion of the first digital mediaitem to merge with a trimmed portion of the second digital media item(e.g., using the previously described sliders).

At block 820, processing logic saves a new digital media item containingthe portion of the first digital media item and the portion of thesecond digital media item. At block 825, processing logic provides alink or embed code for the new digital media item. Note that rather thangenerating and saving a new digital media item, processing logic mayinclude in the link or embed code an identification of the first digitalmedia item and of the second digital media item along with instructionsto merge the portion of the first digital media item to the portion ofthe second digital media item. In either case, an entity accessing thelink or embed code may be presented with the merged portions of thefirst and second digital media items. For example, the entity may see aconcatenated clip that includes a first two minutes of the first digitalmedia item followed by a last three minutes of the second digital mediaitem.

FIG. 9 illustrates a diagrammatic representation of a machine in theexemplary form of a computer system 900 within which a set ofinstructions, for causing the machine to perform any one or more of themethodologies discussed herein, may be executed. In alternativeembodiments, the machine may be connected (e.g., networked) to othermachines in a LAN, an intranet, an extranet, or the Internet. Themachine may operate in the capacity of a server or a client machine inclient-server network environment, or as a peer machine in apeer-to-peer (or distributed) network environment. The machine may be apersonal computer (PC), a tablet PC, a set-top box (STB), a PersonalDigital Assistant (PDA), a cellular telephone, a web appliance, aserver, a network router, switch or bridge, or any machine capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that machine. Further, while only a singlemachine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein.

The exemplary computer system 900 includes a processing device(processor) 902, a main memory 904 (e.g., read-only memory (ROM), flashmemory, dynamic random access memory (DRAM) such as synchronous DRAM(SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 906 (e.g., flashmemory, static random access memory (SRAM), etc.), and a data storagedevice 918, which communicate with each other via a bus 908.

Processor 902 represents one or more general-purpose processing devicessuch as a microprocessor, central processing unit, or the like. Moreparticularly, the processor 902 may be a complex instruction setcomputing (CISC) microprocessor, reduced instruction set computing(RISC) microprocessor, very long instruction word (VLIW) microprocessor,or a processor implementing other instruction sets or processorsimplementing a combination of instruction sets. The processor 902 mayalso be one or more special-purpose processing devices such as anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a digital signal processor (DSP), network processor,or the like. The processor 902 is configured to execute instructions 926for performing the operations and steps discussed herein.

The computer system 900 may further include a network interface device922. The computer system 900 also may include a video display unit 910(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), analphanumeric input device 912 (e.g., a keyboard), a cursor controldevice 914 (e.g., a mouse), and a signal generation device 920 (e.g., aspeaker).

The data storage device 918 may include a computer-readable storagemedium 924 on which is stored one or more sets of instructions 926(e.g., software) embodying any one or more of the methodologies orfunctions described herein. The instructions 926 may also reside,completely or at least partially, within the main memory 904 and/orwithin the processor 902 during execution thereof by the computer system900, the main memory 904 and the processor 902 also constitutingcomputer-readable storage media. The instructions 926 may further betransmitted or received over a network 974 via the network interfacedevice 922.

In one embodiment, the instructions 926 include instructions for asharing module 950, which may correspond to sharing module 205 of FIG.2, and/or a software library containing methods that call a sharingmodule. While the computer-readable storage medium 924 is shown in anexemplary embodiment to be a single medium, the term “computer-readablestorage medium” should be taken to include a single medium or multiplemedia (e.g., a centralized or distributed database, and/or associatedcaches and servers) that store the one or more sets of instructions. Theterm “computer-readable storage medium” shall also be taken to includeany medium that is capable of storing, encoding or carrying a set ofinstructions for execution by the machine and that cause the machine toperform any one or more of the methodologies of the present invention.The term “computer-readable storage medium” shall accordingly be takento include, but not be limited to, solid-state memories, optical media,and magnetic media.

In the foregoing description, numerous details are set forth. It will beapparent, however, to one of ordinary skill in the art having thebenefit of this disclosure, that the present invention may be practicedwithout these specific details. In some instances, well-known structuresand devices are shown in block diagram form, rather than in detail, inorder to avoid obscuring the present invention.

Some portions of the detailed description have been presented in termsof algorithms and symbolic representations of operations on data bitswithin a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these signals as bits, values, elements, symbols, characters,terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms such as “segmenting”, “analyzing”, “determining”, “enabling”,“identifying,” “modifying” or the like, refer to the actions andprocesses of a computer system, or similar electronic computing device,that manipulates and transforms data represented as physical (e.g.,electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

The present invention also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, or it may comprise a general purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but not limited to, any type of diskincluding floppy disks, optical disks, CD-ROMs, and magnetic-opticaldisks, read-only memories (ROMs), random access memories (RAMs), EPROMs,EEPROMs, magnetic or optical cards, or any type of media suitable forstoring electronic instructions.

It is to be understood that the above description is intended to beillustrative, and not restrictive. Many other embodiments will beapparent to those of skill in the art upon reading and understanding theabove description. The scope of the invention should, therefore, bedetermined with reference to the appended claims, along with the fullscope of equivalents to which such claims are entitled.

What is claimed is:
 1. A method comprising: receiving, by an applicationassociated with a media hosting system hosted by a media hosting server,a command of an entity to share a digital media item with one or moreusers on a social networking system provided by a third party serverthat is separate from the media hosting server, wherein the applicationassociated with the media hosting system is running on a user mobiledevice to stream media items from the media hosting server; presentingon the user mobile device a user interface of the application associatedwith the media hosting system for trimming the digital media item priorto the sharing of the digital media item with the one or more users onthe social networking system, wherein the digital media item is a videoor audio file that is hosted by the media hosting server, the userinterface of the application associated with the media hosting systemcomprising a first user interface (UI) portion for playing the digitalmedia item to be shared on the social networking system, and a second UIportion graphically illustrating the trimming of the digital item usinga plurality of sliders and time values associated with playback of thedigital media item to be shared with the one or more users on the socialnetworking system, wherein at least one slider of the plurality ofsliders was added to the second UI portion in response to first input ofthe entity, the first input comprising a selection operation of theentity in the user interface to view a set of options and identify, fromthe set of options, an option to add a pair of sliders to the second UIportion graphically illustrating the trimming of the digital item;receiving, via the user interface of the application associated with themedia hosting system, second input of the entity for a trim operation tobe performed, in connection with the media hosting system, on thedigital media item to be shared with the one or more users on the socialnetworking system, wherein the second input of the entity for the trimoperation comprises moving the plurality of sliders to new locations todivide the digital media item into a plurality of trimmed and remainingregions; in response to receiving the second input of the entity for thetrim operation to be performed, in connection with the media hostingsystem, on the digital media item to be shared with the one or moreusers on the social networking system: providing an identifier of thedigital media item resulting from performing the trim operation, inconnection with the media hosting system, on the digital media item tobe shared with the one or more users on the social networking system;and causing the trimmed digital media item to be shared with the one ormore users on the social networking system, wherein the trimmed digitalmedia item comprises the plurality of remaining regions but not theplurality of trimmed regions.
 2. The method of claim 1, furthercomprising: storing an output of the trim operation by saving thetrimmed digital media item.
 3. The method of claim 1, wherein the secondUI portion provides a preview of the digital media item, wherein thepreview comprises a plurality of thumbnail images arranged sequentiallyto graphically represent the digital media item, and each of theplurality of sliders is displayed in the preview with a correspondingtime value.
 4. The method of claim 1, wherein the identifier of thedigital media item is a link or embed code for the digital media item,the method further comprising: storing the trim operation in the link orthe embed code, wherein accessing the link or the embed code causes thetrim operation to be performed on the digital media item before thedigital media item is presented to the user.
 5. The method of claim 4,wherein: storing the trim operation comprises storing at least one of afirst marker for a first location of a first slider of the plurality ofsliders within the digital media item or a second marker for a secondlocation of a second slider of the plurality of sliders within thedigital media item; and performing the trim operation on the digitalmedia item comprises at least one of using the first marker to identifythe first location from which to begin playback or using the secondmarker to identify the second location at which to end playback, whereinat least one of the first marker or the second marker is stored in thelink or the embed code.
 6. The method of claim 1, further comprising:receiving a command from the entity to share an additional digital mediaitem that was uploaded by another entity, wherein the digital media itemand the additional digital media item are videos; and performing a mergeoperation to join the digital media item and the additional media item.7. The method of claim 1, wherein the plurality of sliders comprises atleast two pairs of sliders.
 8. The method of claim 1, wherein thedigital media item is divided into a plurality of non-consecutivetrimmed regions and a plurality of non-consecutive remaining regions. 9.The method of claim 1, wherein the user interface of the applicationassociated with the media hosting system allows the entity to providethe first input via one of a plurality of operations comprising (i) theselection operation in the user interface to view the set of options andidentify, from the set of options, the option to add the pair of slidersto the second UI portion graphically illustrating the trimming of thedigital item, and (ii) a drag and drop operation on a graphicalrepresentation of the at least one slider from outside of the second UIportion to the second UI portion graphically illustrating the trimmingof the digital item.
 10. A non-transitory computer readable storagemedium having instructions that, when executed by a processing device,cause the processing device to perform a method comprising: receiving,by an application associated with a media hosting system hosted by amedia hosting server, a command of an entity to share a digital mediaitem with one or more users on a social networking system provided by athird party server that is separate from the media hosting server,wherein the application associated with the media hosting system isrunning on a user mobile device to stream media items from the mediahosting server; presenting on the user mobile device a user interface ofthe application associated with the media hosting system for trimmingthe digital media item prior to the sharing of the digital media itemwith the one or more users on the social networking system, wherein thedigital media item is a video or audio file that is hosted by the mediahosting server, the user interface of the application associated withthe media hosting system comprising a first user interface (UI) portionfor playing the digital media item to be shared on the social networkingsystem, and a second UI portion graphically illustrating the trimming ofthe digital item using a plurality of sliders and time values associatedwith playback of the digital media item to be shared with the one ormore users on the social networking system, wherein at least one sliderof the plurality of sliders was added to the second UI portion inresponse to first input of the entity, the first input comprising aselection operation of the entity in the user interface to view a set ofoptions and identify, from the set of options, an option to add a pairof sliders to the second UI portion graphically illustrating thetrimming of the digital item; receiving, via the user interface of theapplication associated with the media hosting system, second input ofthe entity for a trim operation to be performed, in connection with themedia hosting system, on the digital media item to be shared with theone or more users on the social networking system, wherein the secondinput of the entity for the trim operation comprises moving theplurality of sliders to new locations to divide the digital media iteminto a plurality of trimmed and remaining regions; in response toreceiving the second input of the entity for the trim operation to beperformed, in connection with the media hosting system, on the digitalmedia item to be shared with the one or more users on the socialnetworking system: providing an identifier of the digital media itemresulting from performing the trim operation, in connection with themedia hosting system, on the digital media item to be shared with theone or more users on the social networking system; and causing thetrimmed digital media item to be shared with the one or more users onthe social networking system, wherein the trimmed digital media itemcomprises the plurality of remaining regions but not the plurality oftrimmed regions.
 11. The non-transitory computer readable storage mediumof claim 10, the method further comprising: storing an output of thetrim operation by saving the trimmed digital media item.
 12. Thenon-transitory computer readable storage medium of claim 10, wherein thesecond UI portion provides a preview of the digital media item, whereinthe preview comprises a plurality of thumbnail images arrangedsequentially to graphically represent the digital media item, and eachof the plurality of sliders is displayed in the preview with acorresponding time value.
 13. The non-transitory computer readablestorage medium of claim 10, wherein the identifier of the digital mediaitem is a link or embed code for the digital media item, the methodfurther comprising: storing the trim operation in the link or the embedcode, wherein accessing the link or the embed code causes the trimoperation to be performed on the digital media item before the digitalmedia item is presented to the user.
 14. The non-transitory computerreadable storage medium of claim 13, wherein: storing the trim operationcomprises storing at least one of a first marker for a first location ofa first slider of the plurality of sliders within the digital media itemor a second marker for a second location of a second slider of theplurality of sliders within the digital media item; and performing thetrim operation on the digital media item comprises at least one of usingthe first marker to identify the first location from which to beginplayback or using the second marker to identify the second location atwhich to end playback.
 15. The non-transitory computer readable storagemedium of claim 10, the method further comprising: receiving a commandfrom the entity to share an additional digital media item that wasuploaded by another entity, wherein the digital media item and theadditional digital media item are videos; and performing a mergeoperation to join the digital media item and the additional media item.16. The non-transitory computer readable storage medium of claim 10,wherein the plurality of sliders comprises at least two pairs ofsliders.
 17. The non-transitory computer readable storage medium ofclaim 10, wherein the digital media item is divided into a plurality ofnon-consecutive trimmed regions and a plurality of non-consecutiveremaining regions.
 18. A system, comprising: a memory; and a processingdevice, coupled to the memory, to: receive, by an application associatedwith a media hosting system hosted by a media hosting server, a commandof an entity to share a digital media item with one or more users on asocial networking system provided by a third party server that isseparate from the media hosting server, wherein the applicationassociated with the media hosting system is running on a user mobiledevice to stream media items from the media hosting server; present onthe user mobile device a user interface of the application associatedwith the media hosting system for trimming the digital media item priorto the sharing of the digital media item with the one or more users onthe social networking system, wherein the digital media item is a videoor audio file that is hosted by the media hosting server, the userinterface of the application associated with the media hosting systemcomprising a first user interface (UI) portion for playing the digitalmedia item to be shared on the social networking system, and a second UIportion graphically illustrating the trimming of the digital item usinga plurality of sliders and time values associated with playback of thedigital media item to be shared with the one or more users on the socialnetworking system, wherein at least one slider of the plurality ofsliders was added to the second UI portion in response to first input ofthe entity, the first input comprising a selection operation of theentity in the user interface to view a set of options and identify, fromthe set of options, an option to add a pair of sliders to the second UIportion graphically illustrating the trimming of the digital item;receive, via the user interface of the application associated with themedia hosting system, second input of the entity for a trim operation tobe performed, in connection with the media hosting system, on thedigital media item to be shared with the one or more users on the socialnetworking system, wherein the second input of the entity for the trimoperation comprises moving the plurality of sliders to new locations todivide the digital media item into a plurality of trimmed and remainingregions; in response to receiving the second input of the entity for thetrim operation to be performed, in connection with the media hostingsystem, on the digital media item to be shared with the one or moreusers on the social networking system: provide an identifier of thedigital media item resulting from performing the trim operation, inconnection with the media hosting system, on the digital media item tobe shared with the one or more users on the social networking system;and cause the trimmed digital media item to be shared with the one ormore users on the social networking system, wherein the trimmed digitalmedia item comprises the plurality of remaining regions but not theplurality of trimmed regions.
 19. The system of claim 18, wherein theprocessing device is further to: store an output of the trim operationby saving the trimmed digital media item.